/*
 * common.h
 *
 *  Created on: Oct 2, 2011
 *      Author: phopon
 */

#ifndef COMMON_H_
#define COMMON_H_

#include <boost/test/unit_test.hpp>
#include <boost/test/test_case_template.hpp>
#include <boost/mpl/list.hpp>

#include "Exception.h"
#include <iostream>

//non_numeric_test_types

//test_types

#define FLOATS float, double, long double
#define INTS(_prefix) _prefix short int, ##_prefix int, ##_prefix long int, ##_prefix long long int
#define NONNUMERIC bool

typedef boost::mpl::list<
    FLOATS
> float_types;

typedef boost::mpl::list<
    INTS(signed)
> signed_int_types;

typedef boost::mpl::list<
    INTS(signed), INTS(unsigned)
> int_types;

typedef boost::mpl::list<
    INTS(signed), FLOATS
> signed_numeric_types;

typedef boost::mpl::list<
//    INTS(signed), INTS(unsigned), 
//    FLOATS
double> numeric_types;

typedef boost::mpl::list<
    NONNUMERIC
> non_numeric_types;

typedef boost::mpl::list<
    INTS(signed), INTS(unsigned), 
    FLOATS, NONNUMERIC
> test_types;

#endif /* COMMON_H_ */
